package cz.pecinovsky.česky.oopnz._125_;
//Příliš žluťoučký kůň úpěl ďábelské ódy

import cz.pecinovsky.česky.oopnz._000_.Run;


import static cz.pecinovsky.česky.oopnz._125_.KTI_130_.KTI;


////////////////////////////////////////////////////////////////////////////////
//%%+  +++++ Konec ignorovaného počátečního textu +++++
//%A+ >=133z

import cz.pecinovsky.česky.oopnz.utility.IO;
//%A-
//%X+ xxxxx Začátek přeskakovaného textu xxxxx
/*******************************************************************************
 *<pre>
 * Předchozí:   Není - toto_je_nově_definovaná_třída
 *              Ttt v projektu Ppp
 * Následující: Prozatím není
 *
 * Projekt  Ppp
 *   + Přidáno
 *   - Odebráno
 *   ~ Změněno
 *</pre>
 */
public class Volání_130_
{    private Volání_130_() {}   static
////////////////////////////////////////////////////////////////////////////////
//%X- ----- Konec přeskakovaného textu -----


/*******************************************************************************
 * Knihovní třída {@code Volání} slouží k demonstraci chování třídy KTI
 * při jejím prvním použití a při následných použitích
 * a k demonstraci chování jejích konstruktorů.
 *
 * @author Rudolf PECINOVSKÝ
 * @version 6.03.2017 — 2010-11-08
 */
public class Volání
{
//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== STATICKÝ INICIALIZAČNÍ BLOK - STATICKÝ KONSTRUKTOR ========================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================
//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ NESOUKROMÉ METODY TŘÍDY ===========================================

    /***************************************************************************
     * Metoda nijak nepoužívá třídu KTI
     */
    public static void stačímSiSama()
    {
        okno( "stačímSiSama\n\nByla jsem spuštěna\na nikoho nepotřebuji.");
    }


    /***************************************************************************
     * Metoda používá pouze třídu KTI, nepracuje s jejími instancemi.
     */
    public static void potřebujiTřídu()
    {
        okno("potřebujiTřídu\n\nJdu žádat o class-objekt.");
        Object clso = KTI.CLASS_OBJEKT;
        okno("Obdržela jsem objekt\n\n" + clso);
    }


    /***************************************************************************
     * Metoda požaduje vytvoření instance třídy KTI.
     */
    public static void potřebujiInstanci()
    {
        okno("potřebujiInstanci\n\nJdu žádat o instanci.");
        Object inst = new KTI();
        okno("Obdržela jsem objekt\n\n" + inst);
    }


    /***************************************************************************
     * Metoda volá jednoparametrický konstruktor KTI,
     * a němž ví, že bude volat dvouparamerický a ten zase tříparametrický.
     * Metoda slouží pro výklad práce s debuggerem.
     */
    public static void testujiVolání()
    {
        KTI inst = new KTI("Experiment");
        System.out.println("\n=================================" +
                           "\nVytvořená instance: " + inst +
                           "\n=================================");
    }



//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /** Knihovní třída bez dostupného konstruktoru. */
    private Volání() {}

//== ABSTRAKTNÍ METODY =========================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =====================================

    /***************************************************************************
     * Vytiskne zadaný text na standardní výstup a poté
     * jej ještě vypíše v dialogovém okně.
     */
    private static void okno(String text)
    {
        System.out.println("\nvvvvvvvvvvvvvvvvvvvvv\n" +
                           text +
                           "\n^^^^^^^^^^^^^^^^^^^^^");
        IO.zpráva(text);
    }



//== OSTATNÍ NESOUKROMÉ METODY INSTANCÍ ========================================
//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== INTERNÍ DATOVÉ TYPY =======================================================
//== TESTY A METODA MAIN =======================================================
//
//    /***************************************************************************
//     * Testovací metoda.
//     */
//    public static void test()
//    {
//        Volání inst = new Volání();
//    }
//    /** @param args Parametry příkazového řádku - nepoužívané. */
//    public static void main( String[] args )  {  test();  }
}

//%%-  ----- Začátek ignorovaného závěrečného textu -----
////////////////////////////////////////////////////////////////////////////////
//%X+ <xxx
//%X-
//%I+ <xxx
//%I-
//== TESTY A METODA MAIN =======================================================
//Není-li třída testovací, následující dvě metody se smažou
//%X+   Metoda připravená k vložení do testovacích tříd
     /** */
     public void testPřípravek() {}
//%X-


    /***************************************************************************
     * Třída, jejíž instance má na starosti úklid mezi jednotlivými testy,
     * který není možno zakomponovat do metody {@code tearDown()},
     * dokud nebudou studenti umět programovat.
     */
    private static class TearDown implements Run.ITD
    {
        /** {@inheritDoc} */
        @Override
        public void ukliď()
        {
//            Plátno.smažPlátno();
//            SprávcePlátna.getInstance().odstraňVše();
        }
    }


    /***************************************************************************
     * Testovací metoda.
     */
    public static void test()
    {
////Nejedná-li se o testovací třídu, celý blok lze smazat
//        junit.textui.TestRunner.run(suite());
//        junit.textui.TestRunner.run(new Třída("test"));
//        Run.tests(Test.class,
//                new TearDown(),
//                "testPřípravek",
//                "");
        System.exit(0);
    }
    /** @param args Parametry příkazového řádku - nepoužívané. */
    public static void main( String[] args )  {  test();  }
}
